package com.egreen.common.serviceapi.asset;


import com.egreen.common.pojo.DTO.asset.BalanceAccountDTO;
import com.egreen.common.pojo.DTO.asset.OperateBalanceRecordingDTO;
import com.egreen.common.pojo.DTO.asset.OperatePointRecordingDTO;
import com.egreen.common.pojo.VO.asset.OperateBalanceRecordingVO;
import com.egreen.common.pojo.VO.asset.OperatePointRecordingVO;

import java.math.BigDecimal;
import java.util.List;

public interface IAssetServiceApi {

    /**
     * 查询所有人的总余额
     *
     * @param
     * @return
     */
    BigDecimal selectTotalBalance();

    /**
     * 通过查找操作记录来获得已提现到支付宝的总额
     *
     * @param operate
     * @return
     */
    BigDecimal selectWithdrawalTotalBalance(String operate);


    /**
     * 通过账户id来单独获取余额
     *
     * @return
     */
    BigDecimal selectBalanceByAccountId(Long balanceAccountId);

    /**
     * 添加用户支付宝账户
     *
     * @param balanceAccountDTO
     * @return
     */
    int addAlipayAccount(BalanceAccountDTO balanceAccountDTO);

    /**
     * 用户绑定支付宝账户的修改
     *
     * @param balanceAccountDTO
     */
    int updateAlipayAccount(BalanceAccountDTO balanceAccountDTO);

    /**
     * 余额账户的建立
     *
     * @return
     */
    long addBalanceAccount();

    /**
     * 余额增加与减少
     *
     * @param operateBalanceRecordingDTO
     */
    int updateByBalance(OperateBalanceRecordingDTO operateBalanceRecordingDTO);

    /**
     * 通过用户ID查询余额操作记录
     *
     * @param balanceAccountId
     * @return
     */
    List<OperateBalanceRecordingVO> selectBalanceById(Long balanceAccountId);

    /**
     * 通过ID查找到余额账户信息
     *
     * @param id
     * @return
     */
    BalanceAccountDTO selectBalanceAccountById(int id);


    /**
     * 积分增加与减少
     *
     * @param operatePointRecordingDTO
     */
    void updateByPoint(OperatePointRecordingDTO operatePointRecordingDTO);

    /**
     * 通过用户ID查询积分操作记录
     *
     * @param pointAccountId
     * @return
     */
    List<OperatePointRecordingVO> selectPointById(Long pointAccountId);

    /**
     * 积分账户的建立
     *
     * @return
     */
    Long addPointAccount();

    /**
     * 通过 AccountId查询用户积分
     *
     * @param pointAccountId
     * @return
     */
    Integer selectPointByAccountId(Long pointAccountId);


    void userBalanceChange(String userID,String trandMoney);
}
